package com.cool.shark.service;

import com.cool.shark.pojo.dto.CartInsertDto;
import com.cool.shark.pojo.entity.Cart;
import com.cool.shark.pojo.vo.cartNumVo;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Name: CartService
 * @Author: 西风残叶
 * @Date: 2024/4/28 13:56
 * @Version: 1.0
 * @TODO: 购物业务接口
 */
@Transactional
public interface CartService {
    /**
     * 插入购物车信息到数据库
     *
     * @param cart 购物车对象，包含购物车中的商品等信息
     * @return 返回插入操作影响的行数，通常为1表示插入成功，为0表示插入失败或未执行
     */
    void insert(CartInsertDto cart);
    /**
     * 根据用户ID查询购物车列表。
     *
     * @param userId 用户的唯一标识符。
     * @return 返回一个购物车对象的列表。
     */
    List<Cart> list(Integer userId);

    /**
     * 根据用户ID查询购物车商品数量统计。
     *
     * @param userId 用户的唯一标识符。
     * @return 返回一个包含购物车商品数量统计信息的列表。
     */
    List<cartNumVo> cartNumVo(Long userId);
    /**
     * 根据购物车商品ID和用户id删除购物车商品。
     *
     * @param userId 用户Id。
     * @param spuId 商品Id。
     * @return 返回删除操作影响的行数，通常为1表示删除成功，为0表示删除失败或未执行。
     */
    void delete(Long spuId, Integer userId);
}
